import http from '@/utils/request'
// 存用户自己的信息
const saveUser = (user) => {
  return {
    type: 'profile/user',
    payload: user,
  }
}
// 存用户的个人资料
const saveProfile = (profile) => {
  return {
    type: 'profile/profile',
    payload: profile,
  }
}

// 获取用户的个人资料
export const getUser = () => {
  return async (dispatch) => {
    const res = await http('/user', 'get')
    return dispatch(saveUser(res.data))
  }
}

// 获取用户自己的信息
export const getProfile = () => {
  return async (dispatch) => {
    const res = await http('/user/profile', 'get')
    return dispatch(saveProfile(res.data))
  }
}

/**
 * 编辑个人资料
 * @param {*} name 对象的属性名称，可以修改name、gender、birthday、real_name、intro
 * @param {*} value 属性的值
 * @returns
 */
export const updateProfile = (name, value) => {
  return async (dispatch) => {
    await http('/user/profile', 'PATCH', { [name]: value })
    // 重新获取数据并更新redux中的个人信息数据
    return dispatch(getProfile())
  }
}

/**
 * 更新头像
 * @param {FormData} formData 上传头像信息的表单数据
 * @returns thunk
 */
export const updateAvatar = (formData) => {
  return async (dispatch) => {
    // 调用接口进行上传
    await http('/user/photo', 'PATCH', formData)
    return dispatch(getProfile())
  }
}
